/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package persistencia;

import dominio.Cancion;
import java.io.*;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author VWV
 */
public class ManejoTexto implements IPersistencia {

    private String entrada;
    private String salida;

    public ManejoTexto() {
        entrada = "archivos/textoplano/cancionesGuardadas.omg";
        salida = "archivos/textoplano/cancionesNuevas.omg";
    }

    public ManejoTexto(String entrada, String salida) {
        this.entrada = entrada;
        this.salida = salida;
    }

    public List<Cancion> leerCanciones() {
        List<Cancion> cancionesPorEnviar = new ArrayList<Cancion>();
        try {

            BufferedReader reader = new BufferedReader(new FileReader(getEntrada()));
            String[] buffer;
            while (reader.ready()) {
                buffer = reader.readLine().split("/");
                cancionesPorEnviar.add(new Cancion(buffer[0], buffer[1], buffer[2]));
            }
            reader.close();
        } catch (FileNotFoundException ex) {
            System.out.println("No se encontro el archivo a leer");
            cancionesPorEnviar = null;
        } catch (IOException ex) {
            System.out.println("Problema con el I/O del archivo");
            cancionesPorEnviar = null;
        } catch (Exception e) {
            System.out.println("Problema leyendo canciones");
            cancionesPorEnviar = null;
        }

        return cancionesPorEnviar;
    }

    public void escribirCanciones(List<Cancion> canciones) {
        if (canciones != null) {
            try {
                BufferedWriter writer = new BufferedWriter(new FileWriter(getSalida()));
                for (Cancion cancion : canciones) {
                    writer.write(cancion.getNombre() + '/' + cancion.getAutor() + '/' + cancion.getUrl());
                    writer.newLine();
                }
                writer.close();
            } catch (IOException ex) {
                System.out.println("Error de I/O al escribir el archivo");
            }
        } else {
            System.out.println("no se puede persistir una lista de canciones vacia");
        }
    }

    /**
     * @return the entrada
     */
    public String getEntrada() {
        return entrada;
    }

    /**
     * @param entrada the entrada to set
     */
    public void setEntrada(String entrada) {
        this.entrada = entrada;
    }

    /**
     * @return the salida
     */
    public String getSalida() {
        return salida;
    }

    /**
     * @param salida the salida to set
     */
    public void setSalida(String salida) {
        this.salida = salida;
    }
}
